#include <QDateTime>
#include "piezainstrumento.h"
#include "entrenador.h"

PiezaInstrumento::PiezaInstrumento()
{
}

PiezaInstrumento::~PiezaInstrumento()
{

}

void PiezaInstrumento::dibujar(QPainter* painter, ConversorUnidades* conversor, bool esquema)
{
    if (esquema) {
        dibujarEsquema(painter, conversor);
        return;
    } else {
        dibujarNotas(painter, conversor);
        return;
    }

    QRect encuadrePixeles = conversor->rectanguloRealAPixeles(encuadreReal);
    int x = encuadrePixeles.x();
    int y = encuadrePixeles.y();
    int ancho = encuadrePixeles.width();
    int alto = encuadrePixeles.height();

    if (ancho != pixmapNota.width() || alto != pixmapNota.height()) {
        pixmapNota = QPixmap(ancho, alto);
        QPainter painterPixmap(&pixmapNota);  
        dibujarNotas(&painterPixmap, conversor);    
        painterPixmap.end();
    }

    if (getIntensidad() > 200) {
        painter->drawPixmap(x, y, pixmapNota);
    }
}

QColor PiezaInstrumento::getColor()
{  
    QColor color = Entrenador::getInstancia()->getColorNota(nombreNota);

    color.setAlpha(getIntensidad());

    return color;
}

int PiezaInstrumento::getIntensidad()
{
    quint64 ms = contadorTiempo.getMilisegundosTranscurridos();
    if (ms >= 255) {
        return 0;
    }
	int nivelEntrenamiento = 255 - ms;//Entrenador::getInstancia()->getNivelNotaEntrenamiento(nombreNota);
    return nivelEntrenamiento;  
}

void PiezaInstrumento::marcar()
{
    contadorTiempo.inicializar();
}

